﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using WorkDAL;

namespace LookupControl
{
    public class LookupControl
    {
        public static LookupControl Instance()
        {
            return new LookupControl();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="columnList">Ds các column cần lấy</param>
        /// <param name="aliasList">Alias của ds column</param>
        /// <param name="tableName">Table Name</param>
        /// <param name="columnKey">columnKey sẽ tìm theo giá trị của valueKey</param>
        /// <param name="valueKey">columnKey sẽ tìm theo giá trị của valueKey</param>
        /// <param name="columnSelect">Lấy giá trị của column này trả về ValueLookup - Truyền vào là alias của column đó (aliasList)</param>
        /// <param name="checkIfEmpty">Cho phép check khi valueKey là rỗng hay không?</param>
        public string LookUpControl(string columnList, string aliasList, string tableName, string columnKey, string valueKey, string columnSelect, bool checkIfEmpty)
        {
            if (string.IsNullOrEmpty(valueKey) && !checkIfEmpty)
                return string.Empty;
            else
            {
                string valueReturn = string.Empty;

                DataSet ds = new DataSet();
                ds = WorkDAL.LookUp.Lookup.Instance().LookupDs(columnList, aliasList, tableName, columnKey, valueKey, false);

                if (ds.Tables[0].Rows.Count > 0)
                    valueReturn = ds.Tables[0].Rows[0][columnSelect].ToString();
                else
                {
                    LookupForm lookUpForm = new LookupForm(columnList, aliasList, tableName, columnKey, valueKey, columnSelect);
                    lookUpForm.ShowDialog();
                    valueReturn = lookUpForm.ValueLookup;
                }

                return valueReturn;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="columnKey"></param>
        /// <param name="tableName"></param>
        /// <param name="valueKey"></param>
        /// <param name="checkIfEmpty"></param>
        /// <returns></returns>
        public string LookUpControl(string columnKey, string tableName, string valueKey, bool checkIfEmpty)
        {
            TbLookUpTable item = WorkDAL.LookUp.Lookup.Instance().LookUpTable_GetList(columnKey, tableName);

            if (item == null)
                return string.Empty;
            else
                return LookUpControl(item.ColumnList, item.AliasList, tableName, columnKey, valueKey, item.ColumnSelect, checkIfEmpty);
        }
    }
}
